/**
 * 收货地址编辑页面
 * 功能：新增或编辑收货地址
 */
var app = getApp();
var moduleUrl = app.baseUrl + '/client/address';

Page({
  data: {
    address: {
      id: '', // 地址ID，新增时为空
      receiver: '', // 收货人
      phone: '', // 手机号码
      detailAddr: '', // 详细地址
      isDefault: false // 是否默认地址
    },
    isEdit: false, // 是否是编辑模式
  },

  onLoad(options) {
    // 如果有地址参数，说明是编辑模式
    if (options.address) {
      try {
        const address = JSON.parse(options.address);
        this.setData({
          address: address,
          isEdit: true
        });
        
        // 设置页面标题
        dd.setNavigationBar({
          title: '编辑收货地址'
        });
      } catch (e) {
        console.error('解析地址数据失败', e);
      }
    } else {
      // 新增模式
      dd.setNavigationBar({
        title: '新增收货地址'
      });
    }
  },

  /**
   * 收货人输入事件
   */
  onReceiverInput(e) {
    this.setData({
      'address.receiver': e.detail.value
    });
  },

  /**
   * 手机号输入事件
   */
  onPhoneInput(e) {
    this.setData({
      'address.phone': e.detail.value
    });
  },

  /**
   * 详细地址输入事件
   */
  onDetailAddrInput(e) {
    this.setData({
      'address.detailAddr': e.detail.value
    });
  },

  /**
   * 默认地址切换事件
   */
  onDefaultChange(e) {
    this.setData({
      'address.isDefault': e.detail.value
    });
  },

  /**
   * 表单验证
   */
  validateForm() {
    const { receiver, phone, detailAddr } = this.data.address;
    
    // 验证收货人
    if (!receiver || receiver.trim().length < 2) {
      dd.showToast({
        type: 'fail',
        content: '请输入正确的收货人姓名（至少2个字符）',
        duration: 2000
      });
      return false;
    }
    
    // 验证手机号
    const phoneReg = /^1\d{10}$/;
    if (!phone || !phoneReg.test(phone)) {
      dd.showToast({
        type: 'fail',
        content: '请输入正确的11位手机号码',
        duration: 2000
      });
      return false;
    }
    
    // 验证详细地址
    if (!detailAddr || detailAddr.trim().length < 5) {
      dd.showToast({
        type: 'fail',
        content: '请输入详细地址（至少5个字符）',
        duration: 2000
      });
      return false;
    }
    
    return true;
  },

  /**
   * 保存地址
   */
  saveAddress() {
    // 表单验证
    if (!this.validateForm()) {
      return;
    }
    
    var that = this;
    const isEdit = this.data.isEdit;
    const url = isEdit ? moduleUrl + '/update' : moduleUrl + '/add';
    const method = isEdit ? 'PUT' : 'POST';
    
    // 构建请求数据
    const requestData = {
      ...this.data.address,
      userId: app.userId
    };
    
    dd.showLoading({
      content: '保存中...'
    });
    
    dd.httpRequest({
      url: url,
      method: method,
      headers: {
        "Content-Type": "application/json"
      },
      data: JSON.stringify(requestData),
      success: function(res) {
        if (res.data.status === 200) {
          dd.showToast({
            type: 'success',
            content: isEdit ? '修改成功' : '添加成功',
            duration: 2000
          });
          
          // 返回上一页
          setTimeout(() => {
            dd.navigateBack();
          }, 1000);
        } else {
          dd.showToast({
            type: 'fail',
            content: res.data.message || (isEdit ? '修改失败' : '添加失败'),
            duration: 2000
          });
        }
      },
      fail: function(error) {
        console.error('保存地址失败:', error);
        dd.showToast({
          type: 'fail',
          content: '网络异常，请稍后重试',
          duration: 2000
        });
      },
      complete: function() {
        dd.hideLoading();
      }
    });
  }
}); 